<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:ufamily="http://www.universal-devices.com/wsdk/isy/3.0/objects/family" xmlns:ulog="http://www.universal-devices.com/wsdk/isy/3.0/objects/log" xmlns:uupb="http://www.universal-devices.com/wsdk/isy/3.0/objects/upb" xmlns:uinsteon="http://www.universal-devices.com/wsdk/isy/3.0/objects/insteon" xmlns:uo="http://www.universal-devices.com/wsdk/isy/3.0/objects" elementFormDefault="unqualified" targetNamespace="http://www.universal-devices.com/wsdk/isy/3.0/objects" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:import schemaLocation="./upb.xsd" namespace="http://www.universal-devices.com/wsdk/isy/3.0/objects/upb" />
  <xsd:import schemaLocation="./insteon.xsd" namespace="http://www.universal-devices.com/wsdk/isy/3.0/objects/insteon" />
  <xsd:import schemaLocation="./family.xsd" namespace="http://www.universal-devices.com/wsdk/isy/3.0/objects/family" />
  <xsd:import schemaLocation="./log.xsd" namespace="http://www.universal-devices.com/wsdk/isy/3.0/objects/log" />
  <xsd:annotation>
    <xsd:documentation>
			Copyright 2007-2012 Universal Devices, Inc.
			All Rights Reserved
			
			Common objects used across ISY communications
		</xsd:documentation>
  </xsd:annotation>
  <xsd:complexType name="Empty" />
  <xsd:simpleType name="ISYStatusFlag">
    <xsd:annotation>
      <xsd:documentation>
				The status of ISY
				0 = Initializing: in the process of initializing device(s)
				1 = Querying: in the process of querying a device
				2 = Discovery: in discovery/linking mode
				3 = Busy: it's busy may ignore requests
				10 = Ready: idle or low impact activities
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
      <xsd:enumeration value="10" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NodeTypeFlag">
    <xsd:annotation>
      <xsd:documentation>
				All possible options for the node type:
				1 = node
				4 = group/scene
				8 = X10
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="1" />
      <xsd:enumeration value="4" />
      <xsd:enumeration value="8" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NodeOperationsFlag">
    <xsd:annotation>
      <xsd:documentation>
				All possible options for when a new node is either created or
				discovered using the underlying protocol
				1 = add the node and reset all previous setting if any
				2 = unused
				3 = add the node, find all the associated nodes, and create all the linkages thereto
				4 = add the node, find all the associated nodes, but do not create any linkages
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
      <xsd:enumeration value="4" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="LinkModeFlag">
    <xsd:annotation>
      <xsd:documentation>
				Possible flags for when a node is linked or the type of mode for
				the modem in discovery mode
				0x10 (16 decimal) = Controller; The node is going to be a controller for the scene
				0x20 (32 decimal) = Responder ; The node is going to be a responder in the scene
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="16" />
      <xsd:enumeration value="32" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="InternetAccessFlag">
    <xsd:annotation>
      <xsd:documentation>
				0x18 (24 decimal) = Enable Internet Access
				0x26 (38 decimal) = Disable Internet Access
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="24" />
      <xsd:enumeration value="38" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="RestoreDevicesFlag">
    <xsd:annotation>
      <xsd:documentation>
				0 = All shall be restored from the configuration files in ISY
				1 = Does not regenerate groups/scenes - good for testing
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="SetNodeEnabledFlag">
    <xsd:annotation>
      <xsd:documentation>
				0 = The node shall be disabled
				1 = The node shall be enabled
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NodeHierarchyFlag">
    <xsd:annotation>
      <xsd:documentation>
				0 = The node type is not set
				1 = The node type is of type node
				2 = The node type is of type group/scene
				3 = The node type is of type folder/location
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:byte">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="HTMLRoleFlag">
    <xsd:annotation>
      <xsd:documentation>
			 	1 = Read only
				2 = Basic
				3 = Advanced
				4 = Admin
				Default:Basic
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:integer">
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
      <xsd:enumeration value="4" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="BatchModeFlag">
    <xsd:annotation>
      <xsd:documentation>
			 	0 = Off
				1 = On
				Default:Off
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:integer">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="BatteryDeviceWriteFlag">
    <xsd:annotation>
      <xsd:documentation>
			 	0 = Off - turn off automatically writing updates to battery powered devices
				1 = On - turn on automatically writing updates to battery powered devices
				Default:Off
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:integer">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DeviceClassDef">
    <xsd:annotation>
      <xsd:documentation>
				Identifies the device classes to be used. Please note
				the device class element is a bit map and thus multiple
				device classes may be ORed 	
				1 			= HVAC / Thermostats
				2 			= Strip Heater 
				4 			= Water Heater
				8 			= Pool Pump
				16 			= Smart Appliance 
				32 			= Irrigation Pump 
				64 			= Managed Load 
				128			= Simple
				256			= Exterior Lighting
				512			= Interior Lighting
				1024		= Electric Vehicle
				2048		= Generation System
				4096		= Washer
				8192		= Dryer
				16384		= Oven
				32768		= Refrigerator 
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:int">
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="4" />
      <xsd:enumeration value="8" />
      <xsd:enumeration value="16" />
      <xsd:enumeration value="32" />
      <xsd:enumeration value="64" />
      <xsd:enumeration value="128" />
      <xsd:enumeration value="256" />
      <xsd:enumeration value="512" />
      <xsd:enumeration value="1024" />
      <xsd:enumeration value="2048" />
      <xsd:enumeration value="4096" />
      <xsd:enumeration value="8192" />
      <xsd:enumeration value="16384" />
      <xsd:enumeration value="32768" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DeviceClass">
    <xsd:annotation>
      <xsd:documentation>
				A bit map of device class definitions (DeviceClassDef) ORed
			</xsd:documentation>
    </xsd:annotation>
    <xsd:union memberTypes="uo:DeviceClassDef" />
  </xsd:simpleType>
  <xsd:simpleType name="ELKActionCodes">
    <xsd:annotation>
      <xsd:documentation>
				All possible values for communications with ELK
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="a0" />
      <xsd:enumeration value="a1" />
      <xsd:enumeration value="a2" />
      <xsd:enumeration value="a3" />
      <xsd:enumeration value="a4" />
      <xsd:enumeration value="a5" />
      <xsd:enumeration value="a6" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="NodeParent">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="type" type="uo:NodeHierarchyFlag" use="required">
          <xsd:annotation>
            <xsd:documentation>
						The hierarchy type for the parent
						</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="ResponderTypes">
    <xsd:annotation>
      <xsd:documentation>
				Defines the type of responder a node is playing. Used mostly for UPB
				(see upb.xsd).
			</xsd:documentation>
    </xsd:annotation>
    <xsd:union memberTypes="uupb:UPBResponderTypes uinsteon:INSTEONResponderTypes" />
  </xsd:simpleType>
  <xsd:complexType name="ResponderType">
    <xsd:attribute name="type" type="uo:ResponderTypes" use="required" />
  </xsd:complexType>
  <xsd:complexType name="UDNode" abstract="true">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="address" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						The unique address for a node. This address is the one to be used in subsequent calls to ISY to impact a node/group/scene change
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="name" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						The user defined name for a device.
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="family" type="ufamily:NodeFamilyID">
        <xsd:annotation>
          <xsd:documentation>
						This element defines the family of a device. Families are basically
						the protocol/manufacturer level categories for a device. For instance,
						RCS is a family and so is INSTEON or UPB. Using this element allows
						supporting multiple protocols using the same system.
						
						In case of a device node, each family may have different device types (such as
						thermostats vs. load controllers).
						
						Family definitions maybe found in [id]_fam.xml. e.g. 1_fam.xml defines INSTEON family
						whereas 3_fam.xml defines RCS
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="parent" type="uo:NodeParent">
        <xsd:annotation>
          <xsd:documentation>
						The address of the parent if any
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="ELK_ID" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						ELK unique identifier for each node/scene/group
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="flag" type="xsd:short" use="required">
      <xsd:annotation>
        <xsd:documentation>
					A bit mask:
					0x01 -- Node is initialized (internal)
					0x02 -- Node is going to be crawled (internal)
					0x04 -- This is a group node
					0x08 -- This is the root node for ISY, i.e. My Lighting
					0x10 -- Device Communications Error
					0x20 -- Brand new node
					0x40 -- Node shall be deleted
					0x80 -- Node is device root
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="UDLink">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="type" type="xsd:short">
          <xsd:annotation>
            <xsd:documentation>
							0x00 -- Node is neither a controller or responder for the enclosing scene. i.e. devices under the My Lighting node
							0x10 -- Node is a controller for the enclosing scene
							0x20 -- Node is a responder for the enclosing scene
						</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="node" final="extension" block="extension">
    <xsd:complexContent mixed="false">
      <xsd:extension base="uo:UDNode">
        <xsd:sequence>
          <xsd:element minOccurs="1" maxOccurs="1" name="type" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>
								The type of device. For INSTEON: device-cat.device-subcat.version.reserved (4 bytes)
								Please note that the if family element is present, then the device type is a 
								category/sub category within the family.
								
								In most cases the device cat/subcat for all families are the same
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="enabled" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation>
								Whether or not the node is enabled (plugged in).
								Note: this feature only works on 99 Series
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="deviceClass" type="uo:DeviceClass">
            <xsd:annotation>
              <xsd:documentation>
								Type of device which may give a hint as to how to duty cycle	
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="wattage" type="xsd:int">
            <xsd:annotation>
              <xsd:documentation>
								Approximate wattage for this device	in watts
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="dcPeriod" type="xsd:int">
            <xsd:annotation>
              <xsd:documentation>
								Duty cycle period in minutes	
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="pnode" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>
								The address of the primary node for the device partially 
								represented by this node.  If this node is the primary node 
								then pnode will equal address.

								A device may be represented by one or more nodes.  
								One of these nodes is designated the primary node and 
								is used to help group the set of nodes for a device.

								Note:  UPB Mandatory/INSTEON Optional.
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="sgid" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>
								The ID identifying the subgroup of end-points for the device.

								Each node representing a subset of the end-points for a device 
								is identified by a unique subgroup ID.  
								This is similar in function to the last digit in an Insteon 
								Node Address.

								Note:  UPB Mandatory/INSTEON Optional.
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="qry" type="uo:Empty">
            <xsd:annotation>
              <xsd:documentation>
								Whether or not a node is queryable. 
								
								If this tag is not present, then node is not queryable.
								
								A tag was used for future extensibility.

								Note: Currently UPB Only.
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="ctl" type="uo:Empty">
            <xsd:annotation>
              <xsd:documentation>
								Whether or not a node may be used as a controller. 
								
								If this tag is not present, then node is may not be used as a 
								controller.
								
								A tag was used for future extensibility.

								Note: Currently UPB Only.
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="tx" type="xsd:unsignedInt">
            <xsd:annotation>
              <xsd:documentation>
								Bitmask indicating the controller endpoints represented by this node.
								
								A tag was used for future extensibility.

								Note: Currently UPB Only.
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="rx" type="xsd:unsignedInt">
            <xsd:annotation>
              <xsd:documentation>
								Bitmask indicating the responder endpoints represented by this node.
								
								A tag was used for future extensibility.

								Note: Currently UPB Only.
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="1" name="rsp" type="uo:ResponderType">
            <xsd:annotation>
              <xsd:documentation>
								If present, then this node may be used as a scene responder. The
								type of responder is defined in the type attribute.
								
								Note: Currently, UPB Only (see upb.xsd)
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="group" final="extension" block="extension">
    <xsd:complexContent mixed="false">
      <xsd:extension base="uo:UDNode">
        <xsd:sequence>
          <xsd:element minOccurs="0" maxOccurs="1" name="deviceGroup" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>
								The underlying group/scene number associated with this scene. Normally, not used except for programs made for debugging
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element minOccurs="0" maxOccurs="unbounded" name="link" type="uo:UDLink">
            <xsd:annotation>
              <xsd:documentation>
								The address and the type (controller vs. responder) of devices participating in a group/scene
							</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="folder" final="extension" block="extension">
    <xsd:complexContent mixed="false">
      <xsd:extension base="uo:UDNode">
        <xsd:annotation>
          <xsd:documentation>
						Signifies a folder. Note that folders do not have ELK-IDs
					</xsd:documentation>
        </xsd:annotation>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="nodes">
    <xsd:annotation>
      <xsd:documentation>
				The configuration of all the des already set in ISY
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="root" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						The name of ISY network. If blank, then it may be construed as the Network node.
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="folder" type="uo:folder" />
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="node" type="uo:node" />
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="group" type="uo:group" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DeviceSpecifications">
    <xsd:annotation>
      <xsd:documentation>
				Describes the characteristics of the ISY hardware/firmware and some info about the underlying protocol
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="make" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="manufacturerURL" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="model" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="icon" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="archive" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="chart" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="queryOnInit" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						Whether or not ISY queries all devices upon reboot
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="oneNodeAtATime" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						Whether or not nodes are queried one at a time
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="UPnPSpecifications">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="upnpDevice" type="uo:UPnPInfo">
        <xsd:annotation>
          <xsd:documentation>
						Provides pertinent information about how ISY will interact with the UPnP subsystem
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="upnpService" type="uo:UPnPInfo" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="UPnPInfo">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="utype" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						The UPnP device/service type which is advertised and responded to
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="version" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name="ControlType">
    <xsd:annotation>
      <xsd:documentation>
				Type of controls for each driver.
			</xsd:documentation>
    </xsd:annotation>
    <xsd:union memberTypes="uinsteon:INSTEONControlTypes uupb:UPBControlTypes" />
  </xsd:simpleType>
  <xsd:complexType name="Control">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="name" type="uo:ControlType" />
      <xsd:element minOccurs="0" maxOccurs="1" name="description" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="readOnly" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						default is true
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="isQueryAble" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						default is false
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="isNumeric" type="xsd:boolean" />
      <xsd:element minOccurs="0" maxOccurs="1" name="numericUnit" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="min" type="xsd:integer" />
      <xsd:element minOccurs="0" maxOccurs="1" name="max" type="xsd:integer" />
      <xsd:element minOccurs="0" maxOccurs="1" name="isGlobal" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						Applies to ISY as a whole
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="isGUI" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						It has no correspomding value on the device side
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="actions" type="uo:Actions" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Action">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="name" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="label" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="description" type="xsd:string" />
      <xsd:element minOccurs="0" name="readOnly" type="xsd:boolean" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Actions">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="action" type="uo:Action" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Controls">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="control" type="uo:Control" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name="SupportedSecuritySystems">
    <xsd:annotation>
      <xsd:documentation>
				A list of supported Security Systems		
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ELK" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="SecuritySystemType">
    <xsd:annotation>
      <xsd:documentation>
				Defines the type of security system(s) configured for ISY	
			</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="type" type="uo:SupportedSecuritySystems">
      <xsd:annotation>
        <xsd:documentation>
					Supported Security Systems						
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="version" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>
					ISY version for the driver
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="ProductDriverType">
    <xsd:annotation>
      <xsd:documentation>
				Product Drivers are tied into functionality for specific 
				Protocol/Configuration
			</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="type" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>
					The type/name of the driver. e.g. INSTEON			
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="version" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>
					ISY version for the driver
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:simpleType name="NetworkSecurityProtocol">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="SSL" />
      <xsd:enumeration value="UPNP" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NetworkSecurityProtocolVersion">
    <xsd:restriction base="xsd:double">
      <xsd:enumeration value="3.0">
        <xsd:annotation>
          <xsd:documentation>
						SSL 3.0
					</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="3.1">
        <xsd:annotation>
          <xsd:documentation>
						TLS 1.0	
					</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="3.2">
        <xsd:annotation>
          <xsd:documentation>
						TLS 1.1	
					</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="3.3">
        <xsd:annotation>
          <xsd:documentation>
						TLS 1.2	
					</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="NetworkSecurity">
    <xsd:annotation>
      <xsd:documentation>
				SSL vs. TLS
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="security" type="uo:NetworkSecurityProtocol">
        <xsd:annotation>
          <xsd:documentation>
		 				SSL or UPnP
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="v" type="uo:NetworkSecurityProtocolVersion" use="optional">
      <xsd:annotation>
        <xsd:documentation>
					SSL/TLS version if any. If this element exists, then the underlying hardware 
					will support TLS and up to the version defined in this element
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="configuration">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="deviceSpecs" type="uo:DeviceSpecifications" />
      <xsd:element minOccurs="1" maxOccurs="1" name="upnpSpecs" type="uo:UPnPSpecifications" />
      <xsd:element minOccurs="0" maxOccurs="1" name="controls" type="uo:Controls" />
      <xsd:element minOccurs="1" maxOccurs="1" name="driver_timestamp" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="app" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="app_version" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="platform" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="build_timestamp" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="baseDriver" type="uo:ProductDriverType" />
      <xsd:element minOccurs="1" maxOccurs="1" name="root" type="uo:DeviceRoot" />
      <xsd:element minOccurs="1" maxOccurs="1" name="product" type="uo:Product" />
      <xsd:element minOccurs="0" maxOccurs="1" name="features" type="uo:Features" />
      <xsd:element minOccurs="1" maxOccurs="1" name="triggers" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						Whether or not Triggers are activated
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="maxTriggers" type="xsd:integer">
        <xsd:annotation>
          <xsd:documentation>
						Maximum number of triggers supported for this platform. If not present, assume 1024.
						Examples: 1024, 2048
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="security">
        <xsd:annotation>
          <xsd:documentation />
        </xsd:annotation>
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="SSL" />
            <xsd:enumeration value="UPNP" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="isDefaultCert" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation>
						Whether or not we are using the default SSL certificate which was shipped originally with ISY
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="internetAccessURL" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						The remote/extenal/internet URL by which one can access this system
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="3" name="secsys" type="uo:SecuritySystemType">
        <xsd:annotation>
          <xsd:documentation>
						If a security system has been installed/configured, include the type/version here
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Product">
    <xsd:annotation>
      <xsd:documentation>
				Describes the type of ISY for which this is the configuration
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="id" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="desc" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Feature">
    <xsd:annotation>
      <xsd:documentation>
				An ISY feature or service.
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="id" type="xsd:int" />
      <xsd:element minOccurs="0" maxOccurs="1" name="desc" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="isInstalled" type="xsd:boolean" />
      <xsd:element minOccurs="0" maxOccurs="1" name="isAvailable" type="xsd:boolean" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Features">
    <xsd:annotation>
      <xsd:documentation>
				A list of ISY installed features/services
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="feature" type="uo:Feature" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DeviceRoot">
    <xsd:annotation>
      <xsd:documentation>
				Defines the root Group for ISY.
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="id" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="name" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SystemStatus">
    <xsd:annotation>
      <xsd:documentation>
				ISY's System Status:
				NumRemainingOps = an estimate of how many operations are left to complete
				DelayBetweenOps (in miliseconds) = an estimate of any delay between each operation
				Note: you may assume 1 second per each operation
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="Stat" type="uo:ISYStatusFlag" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NumRemainingOps" type="xsd:long" />
      <xsd:element minOccurs="1" maxOccurs="1" name="DelayBetweenOps" type="xsd:long" />
      <xsd:element minOccurs="1" maxOccurs="1" name="InSafeMode" type="xsd:boolean" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DateTime">
    <xsd:annotation>
      <xsd:documentation>
				ISY's DateTime Structure:
				NTP		= time in NTP format
				TMZOffset	= Time zone Offset from GMT (in seconds)
				DST		= Daylight Saving Time (true/false)
				Lat		= Latitude (in degrees)
				Long		= Longitude (in degrees)
				Sunrise		= Sunrise time in NTP format (response only)
				Sunset		= Sunset time in NTP format (response only)
				IsMilitary  = Whether or not we should use 24 hour format
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="NTP" type="xsd:long" />
      <xsd:element minOccurs="1" maxOccurs="1" name="TMZOffset" type="xsd:int" />
      <xsd:element minOccurs="1" maxOccurs="1" name="DST" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="Lat" type="xsd:float" />
      <xsd:element minOccurs="1" maxOccurs="1" name="Long" type="xsd:float" />
      <xsd:element minOccurs="0" maxOccurs="1" name="Sunrise" type="xsd:long" />
      <xsd:element minOccurs="0" maxOccurs="1" name="Sunset" type="xsd:long" />
      <xsd:element minOccurs="0" maxOccurs="1" name="IsMilitary" type="xsd:boolean" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="NotificationsOptions">
    <xsd:annotation>
      <xsd:documentation>
				MailTo		= Comma delimited list of notification recipients
				CompactEmail	= Whether or not to send short notifications
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="MailTo" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="CompactEmail" type="xsd:boolean" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ProgramOptions">
    <xsd:annotation>
      <xsd:documentation>
				PCacthUp	= Whether or not programs should catch up upon startup
				PGracePeriod	= The amount of time (in seconds) after which a schedule is still considered met
				HTMLRole	= The role for HTML user
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="PCatchUp" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="PGracePeriod" type="xsd:int" />
      <xsd:element minOccurs="1" maxOccurs="1" name="HTMLRole" type="uo:HTMLRoleFlag" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="NTPOptions">
    <xsd:annotation>
      <xsd:documentation>
		 		NTPHost		= NTP host name
		 		NTPEnabled	= Whether or not NTP checking is enabled
				NTPInterval	= The amount of time (in seconds) between each NTP check
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPHost" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPEnabled" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPInterval" type="xsd:int" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SystemOptions">
    <xsd:annotation>
      <xsd:documentation>
				ISY's System Options (configuration of how ISY works)
				MailTo		= Comma delimited list of notification recipients
				CompactEmail	= Whether or not to send short notifications
				QueryOnInit	= Whether or not to query all devices at Restart
				PCacthUp   	= Whether or not programs should catch up upon startup
				PGracePeriod	= The amount of time (in seconds) after which a schedule is still considered met
				NTPHost	   	= NTP host name
				NTPActive  	= Whether or not ISY has been able to communicate with the NTP host
				NTPEnabled 	= Whether or not NTP checking is enabled
				NTPInterval	= The amount of time (in seconds) between each NTP check
				WaitBusyReading = Whether or not ISY has to wait for "silence" before sending the next packet
				HTMLRole   	= The role of the HTML user				
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="MailTo" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="CompactEmail" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="QueryOnInit" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="PCatchUp" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="PGracePeriod" type="xsd:int" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPHost" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPActive" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPEnabled" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="NTPInterval" type="xsd:int" />
      <xsd:element minOccurs="1" maxOccurs="1" name="WaitBusyReading" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="HTMLRole" type="uo:HTMLRoleFlag" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SMTPConfiguration">
    <xsd:annotation>
      <xsd:documentation>
				SMTP Configuration
				UseDefaultSMTP	= Whether or not we should use UDI's default SMTP Server
				SMTPServer	= SMTP Server
				SMTPPort  	= SMTP Port
				SMTPUID	  	= SMTP User ID
				SMTPPWD	  	= SMTP Password
				SMTPFrom  	= SMTP From email address
				SMTPTimeout = SMTP Timeout to wait for each operation
				UseTLS	  	= Whether or not we should use TLS
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="UseDefaultSMTP" type="xsd:boolean" />
      <xsd:element minOccurs="1" maxOccurs="1" name="SMTPServer" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="SMTPPort" type="xsd:int" />
      <xsd:element minOccurs="0" maxOccurs="1" name="SMTPUID" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="SMTPPWD" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="SMTPFrom" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="SMTPTimeout" type="xsd:int" />
      <xsd:element minOccurs="0" maxOccurs="1" name="UseTLS" type="xsd:boolean" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DriverError">
    <xsd:annotation>
      <xsd:documentation>
				Driver error definitions
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="code" type="xsd:int" />
      <xsd:element minOccurs="0" maxOccurs="1" name="param1" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="param2" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="LastError">
    <xsd:annotation>
      <xsd:documentation>
		 		A list of DriverError(s)
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="error" type="uo:DriverError" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DebugOptions">
    <xsd:annotation>
      <xsd:documentation>
		 		The possible debug levels that can be chosen
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="option" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DBG">
    <xsd:annotation>
      <xsd:documentation>
		 		Debug structure
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="options" type="uo:DebugOptions" />
      <xsd:element minOccurs="1" maxOccurs="1" name="current" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SceneProfile">
    <xsd:annotation>
      <xsd:documentation>
		 		The structure which represents the profile of responders for a scene
		 		OL = on level
		 		RR = ramp rate
		 		Climate will be added in release 3
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="node" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="OL" type="xsd:double" />
      <xsd:element minOccurs="0" maxOccurs="1" name="RR" type="xsd:double" />
      <xsd:element minOccurs="0" maxOccurs="1" name="CLISPC" type="xsd:double" />
      <xsd:element minOccurs="0" maxOccurs="1" name="CLISPH" type="xsd:double" />
      <xsd:element minOccurs="0" maxOccurs="1" name="CLIFS" type="xsd:int" />
      <xsd:element minOccurs="0" maxOccurs="1" name="CLIMD" type="xsd:int" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SceneProfiles">
    <xsd:annotation>
      <xsd:documentation>
		 		The structure which represents the profiles of responders for a scene
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="SP" type="uo:SceneProfile" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Subscription">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="SID" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="duration" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DDNSHost">
    <xsd:annotation>
      <xsd:documentation>
		 		DDNS host object. The name is mandatory.
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="name" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="ip" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name="UDIVariableType">
    <xsd:restriction base="xsd:int">
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="Variable">
    <xsd:annotation>
      <xsd:documentation>
		 		Defines a variable
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="init" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
		 				Initial value of a variable
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="val" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="ts" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
		 				The last updated time stamp in YYYYMMDD HH:MM:SS
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="type" type="uo:UDIVariableType" use="required" />
    <xsd:attribute name="id" type="xsd:string" use="required">
      <xsd:annotation>
        <xsd:documentation>
		 			The id of the variable
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="Variables">
    <xsd:annotation>
      <xsd:documentation>
		 		list of variables
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="var" type="uo:Variable" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VariableDefinition">
    <xsd:annotation>
      <xsd:documentation>
		 		Variable definition with name and id for mapping purposes
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="id" type="xsd:string" />
      <xsd:element minOccurs="1" maxOccurs="1" name="name" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VariableDefinitions">
    <xsd:annotation>
      <xsd:documentation>
		 		A List of varialbe definitions
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="e" type="uo:VariableDefinition" />
    </xsd:sequence>
    <xsd:attribute name="type" type="uo:UDIVariableType" use="required" />
  </xsd:complexType>
  <xsd:simpleType name="OpenADRProfile">
    <xsd:annotation>
      <xsd:documentation>
				Current operating mode for the OpenADR event
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:short">
      <xsd:enumeration value="0">
        <xsd:annotation>
          <xsd:documentation>
						Profile 1	
					</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="1">
        <xsd:annotation>
          <xsd:documentation>
						Profile 2	
					</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="OpenADRStates">
    <xsd:annotation>
      <xsd:documentation>
				Definition of different OpenADR states
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Inactive" />
      <xsd:enumeration value="Very far" />
      <xsd:enumeration value="Far" />
      <xsd:enumeration value="Near" />
      <xsd:enumeration value="Very near" />
      <xsd:enumeration value="Active" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="OpenADRStatus">
    <xsd:simpleContent>
      <xsd:extension base="uo:OpenADRStates">
        <xsd:attribute name="profile" type="uo:OpenADRProfile" use="required">
          <xsd:annotation>
            <xsd:documentation>
							The profile:
							0 = Profile 1
							1 = Profile 2
						</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="OpenADRMode">
    <xsd:annotation>
      <xsd:documentation>
				Current operating mode for the OpenADR event
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="None" />
      <xsd:enumeration value="Normal" />
      <xsd:enumeration value="Moderate" />
      <xsd:enumeration value="High" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="OpenADRState">
    <xsd:annotation>
      <xsd:documentation>
		 		Defines the parameters for an OpenADR Event
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="Status" type="uo:OpenADRStatus" />
      <xsd:element minOccurs="1" maxOccurs="1" name="Mode" type="uo:OpenADRMode" />
      <xsd:element minOccurs="1" maxOccurs="1" name="Base_Price" type="xsd:unsignedInt" />
      <xsd:element minOccurs="0" maxOccurs="1" name="Current_Price" type="xsd:unsignedInt" />
      <xsd:element minOccurs="0" maxOccurs="1" name="StartTime" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="EndTime" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name="SystemActor">
    <xsd:annotation>
      <xsd:documentation>
				Identifies the actor which initiated the action being logged
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
      <xsd:enumeration value="4" />
      <xsd:enumeration value="5" />
      <xsd:enumeration value="6" />
      <xsd:enumeration value="7" />
      <xsd:enumeration value="8" />
      <xsd:enumeration value="9" />
      <xsd:enumeration value="10" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="RestResponse">
    <xsd:annotation>
      <xsd:documentation>
		 		Response for REST true/false operations
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="succeeded" type="xsd:boolean" />
    </xsd:sequence>
    <xsd:attribute name="status" type="xsd:integer" use="required">
      <xsd:annotation>
        <xsd:documentation>
		 			In most cases, status is the corresponding HTTP status such as 401, 404, 500, etc.
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="LogInfo">
    <xsd:annotation>
      <xsd:documentation>
				Defines the elements of a log
			</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="description" type="xsd:string" />
      <xsd:element minOccurs="0" maxOccurs="1" name="actors" type="ulog:Actors">
        <xsd:annotation>
          <xsd:documentation>
						Actors which could initiate/cause a log entry.
						For sub definitions, this element may not be present.
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="logEntryTypes" type="ulog:LogEntryTypes">
        <xsd:annotation>
          <xsd:documentation>
						Supported log entries.
						For sub definitions, this element may not be present.
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="errorMessages" type="ulog:Messages">
        <xsd:annotation>
          <xsd:documentation>
						Error Messages 
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>